﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using csharp.rad.general;
using ComponentFactory.Krypton.Toolkit;

namespace csharp.rad.GOVhotel
{
    public partial class Lançto : KryptonForm
    {
        Database myDBase;
        public static String Ação;
        TextBox[] Quant = new TextBox[4];
        int[] queBlk = new int[25];
        int[] tabCódCame = new int[30];
        Font myFont = new Font(FontFamily.GenericSansSerif,10, FontStyle.Bold);
        int antCama = -7, antApto, antAção, talBlk, códDupla, qRow, numAção, talLocal = -7;
        string[] tabAções = { "nada", "faxina", "pós-saída", "atendimento",
            "dispensada", "limpeza", "reposição", "manutenção"};
        string[] tabGrupo = { "0", "1", "2", "3", "4", "5" };
        int[] tabDupla = { 0, 1, 2, 3, 4, 5 };
        string titGrupo;

        int [] qtProd = new int [4];

        public Lançto(Database myDBase)
        {
            InitializeComponent();
            this.myDBase = myDBase;
            int lefo = 9;
            for (int xx = 0; xx < 4; xx++)
            {
                Quant[xx] = new TextBox();
                Quant[xx].Size = new Size(30, 30);
                Quant[xx].Location = new Point(lefo, 110);
                Quant[xx].Font = myFont;
                Quant[xx].Tag = xx;
                Quant[xx].MaxLength = 2;
                Quant[xx].Visible = true;
                Quant[xx].KeyPress += new KeyPressEventHandler(Quant_KeyPress); 
                Quant[xx].Parent = janProds;
                janProds.Controls.Add(Quant[xx]);
                lefo = lefo + 30;
            }
            string[] tabLocal = new string[] { "Funcion_1", "Funcion_2", "Lanchon_3", "Lanchon_4",
                "Piscina_5", "Piscina_6", "Recepç_7", "Recepç_8" };
            for (int yy = 0; yy < 8; yy++)
            {
                int imgIdx = 6;
                if ((yy % 2) == 0) imgIdx = 4;
                viewLocal.Items.Add(yy.ToString(), tabLocal[yy], imgIdx);  
            }
        }

        private void Form_Load(object sender, EventArgs e)
        {
            for (int kk = 1; kk < 8; kk++)
                viewAção.Items.Add(kk.ToString(), tabAções[kk], 5);
            for (int blk = 1; blk < 9; blk++)
            {
                for (int apt = 1; apt < 5; apt++)
                {
                    int numo = (blk * 100) + apt;
                    viewApto.Items.Add(numo.ToString(), "x" + numo.ToString(), 0);
                }
            }
            int resp = Form_Monta_Duplas();
            if (resp != 0) return;
            resp = Form_Monta_Singles();
            if (resp != 0) return;
            resp = Form_Monta_Tarefa();
            if (resp != 0) return;
            datador.Value = DateTime.Today;
            datador.MinDate = DateTime.Today.AddDays(-60);
            datador.MaxDate = DateTime.Today;
            dataSaída.Value = DateTime.Today;
            dataSaída.MinDate = DateTime.Today.AddMonths(- 6);
            dataSaída.MaxDate = DateTime.Today.AddMonths(+ 6);
            numBloco.Focus();
        }

        private int Form_Monta_Duplas()
        {
            Duplas rolDupla = new Duplas(myDBase);
            int dbRet = rolDupla.Lista();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: LançtoLoadListDupla" + "\n" + rolDupla.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return dbRet;
            }
            for (int xx = 0; xx < rolDupla.Items.Count; xx++)
            {
                if (rolDupla.Items[xx].Ativa == "S")
                {
                    int qBlk = rolDupla.Items[xx].Bloco;
                    tabDupla[qBlk] = rolDupla.Items[xx].Código; 
                    tabGrupo[qBlk] = "";
                    int[] tabCame = new int[6] {rolDupla.Items[xx].Cameira_1,rolDupla.Items[xx].Cameira_2,
                        rolDupla.Items[xx].Cameira_3,rolDupla.Items[xx].Cameira_4,
                        rolDupla.Items[xx].Cameira_5,rolDupla.Items[xx].Cameira_6};
                    for (int cm = 0; cm < 6; cm++)
                    {
                        if (tabCame[cm] != 0)
                        {
                            Cameira regCame = new Cameira(myDBase);
                            regCame.Código = Convert.ToInt32(tabCame[cm]);
                            dbRet = regCame.Obter();
                            if (dbRet != 0)
                            {
                                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                                    + "referência: ParesLoadQueCame" + "\n" + regCame.MsgErro,
                                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                return dbRet;
                            }
                            tabGrupo[qBlk] = tabGrupo[qBlk] + regCame.Nome.Trim() + " / ";
                            for (int qq = 0; qq < 30; qq++)
                            {
                                if (tabCame[cm] == tabCódCame[qq]) break;
                                if (tabCódCame[qq] == 0)
                                {
                                    tabCódCame[qq] = tabCame[cm];
                                    break;
                                }
                            }
                        }
                    }
                }
            }
            txGrupo.Text = tabGrupo[1];
            return 0;
        }

        private int Form_Monta_Singles()
        {
            Cameiras rolCame = new Cameiras(myDBase);
            int dbRet = rolCame.ListaCame();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: LançtoLoadCames" + "\n" + rolCame.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return dbRet;
            }
            for (int xx = 0; xx < rolCame.Items.Count; xx++)
            {
                bool Found = false;
                for (int zz = 0; zz < 30; zz++)
                {
                    if (rolCame.Items[xx].Código == tabCódCame[zz])
                    {
                        Found = true;
                        break;
                    }
                }
                if ((!Found) && (rolCame.Items[xx].Tipo != "F"))
                    viewCameira.Items.Add(rolCame.Items[xx].Código.ToString(), rolCame.Items[xx].Nome, 2);
            }
            return 0;
        }

        private void Form_Monta_Operações()
        {
            Operações tabOpera = new Operações(myDBase);
            tabOpera.Data = datador.Value;
            int dbRet = tabOpera.ListaDia();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: LançtoLoadOpera" + "\n" + tabOpera.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            for (int xx = 0; xx < tabOpera.Items.Count; xx++)
            {
                string conjunto = "";
                numAção = tabOpera.Items[xx].Número; 
                int [] cjCódCame = new int [6] {tabOpera.Items[xx].Cameira_1, tabOpera.Items[xx].Cameira_2,
                    tabOpera.Items[xx].Cameira_3, tabOpera.Items[xx].Cameira_4,
                    tabOpera.Items[xx].Cameira_5, tabOpera.Items[xx].Cameira_6};
                for (int cd = 0; cd < 6; cd++)
                {
                    if (cjCódCame[cd] == 0) break;
                    Cameira queCame = new Cameira(myDBase);
                    queCame.Código = cjCódCame[cd];
                    dbRet = queCame.Obter();
                    if (dbRet != 0)
                    {
                        MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                            + "referência: LançtoMontaCame" + "\n" + queCame.MsgErro,
                            "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    conjunto = conjunto + queCame.Nome.Trim() + " / ";
                }
                Reposições queRepos = new Reposições(myDBase);
                queRepos.Número = numAção;
                dbRet = queRepos.Lista();
                if (dbRet != 0)
                {
                    MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                        + "referência: LançtoLoadRepos" + "\n" + queRepos.MsgErro,
                        "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                for (int rp = 0; rp < queRepos.Items.Count; rp++)
                {
                    qtProd[rp] = queRepos.Items[rp].Quantidade;   
                }
                String blkApto = tabOpera.Items[xx].Local.ToString("0_000");   
                String edçAção = tabAções[tabOpera.Items[xx].Ação];
                String edçQuant = qtProd[0].ToString(" 00 ") + qtProd[1].ToString(" 00 ")
                    + qtProd[2].ToString(" 00 ") + qtProd[3].ToString(" 00");
                string[] linha = { numAção.ToString(), conjunto , blkApto, edçAção, edçQuant };
                listaAções.Rows.Add(linha);
                listaAções.Sort(açApto, ListSortDirection.Ascending);
            }
        }

        private int Form_Monta_Tarefa()
        {
            Tarefa tafDia = new Tarefa(myDBase);
            tafDia.Data = DateTime.Today;
            int dbRet = tafDia.Existe();
            if (dbRet == 7)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: LançtoLoadTarefa" + "\n" + tafDia.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return 7;
            }
            if (dbRet == 1) return 0;
            dbRet = tafDia.SetCarga();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: LançtoLoadCarga" + "\n" + tafDia.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return 7;
            }
            return 0;
        }

        void Quant_KeyPress(object sender, KeyPressEventArgs e)
        {
            int idx = (int)((TextBox)sender).Tag;
            if (e.KeyChar == (char)Keys.Enter)
            {
                cmdOK.Enabled = true;
                if (idx < 2) Quant[idx + 1].Focus();
                else if ((idx == 2) && (Quant[3].ReadOnly == false)) Quant[3].Focus();
                else cmdOK.Focus();
            }
            if ((e.KeyChar < (char) Keys.D0 || e.KeyChar > (char) Keys.D9) &&
                (e.KeyChar != (char) Keys.Back)) e.Handled = true;
        }

        private void cmdOK_Click(object sender, EventArgs e)
        {
            for (int xx = 0; xx < 4; xx++)
            {
                if (Quant[xx].Text != "")
                    qtProd[xx] = Convert.ToInt32(Quant[xx].Text);
                else
                    qtProd[xx] = 0;
            }
            cmdOK.Enabled = false;
            janAção.Enabled = false;
            janProds.Enabled = false;
            int resp = cmdOK_GravaDados();
            if (resp != 0) return;
            String edição = qtProd[0].ToString(" 00 ") + qtProd[1].ToString(" 00 ")
                + qtProd[2].ToString(" 00 ") + qtProd[3].ToString(" 00");
            string onde = "";
            if (talBlk != 6)
            {
                onde = viewApto.Items[antApto].Text;
                listaAções.Rows.Add(numAção.ToString(), titGrupo, onde, viewAção.Items[antAção].Text, edição);
            }
            else
            {
                int numoLocal = talLocal +1;
                onde = "6_00" + numoLocal.ToString();
                listaAções.Rows.Add(numAção.ToString(), viewCameira.Items[antCama].Text,
                    onde, viewAção.Items[antAção].Text, edição);
            }
            listaAções.Sort(açApto, ListSortDirection.Ascending);
            listaAções.FirstDisplayedScrollingRowIndex = listaAções.Rows.Count - 1;
            Quant[0].Text = ""; Quant[1].Text = ""; Quant[2].Text = ""; Quant[3].Text = "";
            janData.Enabled = true; 
            viewAção.Items[antAção].ImageIndex = 5;
            viewAção.Items[antAção].BackColor = SystemColors.Control; 
            janAção.Enabled = false;
            if (talBlk != 6)
            {
                txPessoas.Text = "";
                dataSaída.Value = datador.Value;
                janPessoas.Enabled = false;
                int qOper = Convert.ToInt32(viewAção.Items[antAção].Name);
                int qImg = Convert.ToInt32(viewApto.Items[antApto].ImageIndex);
                if ((qOper != 4) && (qImg != 4))
                    if ((qImg == 3) || (qImg == 1)) qImg = qImg - 1;
                viewApto.Items[antApto].ImageIndex = qImg;
                viewApto.Items[antApto].BackColor = SystemColors.Control;
                viewApto.Focus();
            }
            else
            {
                viewLocal.Items[talLocal].BackColor = SystemColors.Control;  
            }

        }

        private int cmdOK_GravaDados()
        {
            myDBase.BeginTransaction(IsolationLevel.ReadCommitted);
            int dbRet = 0;
            Operação regOpera = new Operação(myDBase);
            regOpera.Data = datador.Value;
            if (talBlk != 6)
            {
                Dupla estaDupla = new Dupla(myDBase);
                estaDupla.Código = códDupla;
                dbRet = estaDupla.Obter();
                if (dbRet != 0)
                {
                    MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                        + "referência: LançtoGravarDupla" + "\n" + estaDupla.MsgErro,
                        "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return 7;
                }
                regOpera.Cameira_1 = estaDupla.Cameira_1;
                regOpera.Cameira_2 = estaDupla.Cameira_2;
                regOpera.Cameira_3 = estaDupla.Cameira_3;
                regOpera.Cameira_4 = estaDupla.Cameira_4;
                regOpera.Cameira_5 = estaDupla.Cameira_5;
                regOpera.Cameira_6 = estaDupla.Cameira_6;
                regOpera.Local = Convert.ToInt32(viewApto.Items[antApto].Name);
                regOpera.NumPessoas = Convert.ToInt32(txPessoas.Text);
                regOpera.Saída = dataSaída.Value;
            }
            else
            {
                regOpera.Cameira_1 = códDupla;
                regOpera.Cameira_2 = 0;
                regOpera.Cameira_3 = 0;
                regOpera.Cameira_4 = 0;
                regOpera.Cameira_5 = 0;
                regOpera.Cameira_6 = 0;
                int numoLocal = talLocal + 1;
                regOpera.Local = 6000 + numoLocal;
                regOpera.NumPessoas = 0;
                regOpera.Saída = datador.Value;
            }
            regOpera.Ação = Convert.ToInt32(viewAção.Items[antAção].Name);
            dbRet = regOpera.Insert();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: LançtoGravarOperação" + "\n" + regOpera.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return 7;
            }
            numAção = regOpera.Número;
            Reposição regRepo = new Reposição(myDBase);
            regRepo.Número = numAção;
            for (int xx=0; xx<4; xx++)
            {
                regRepo.CódProduto = (xx + 1);
                regRepo.Quantidade = qtProd[xx];
                dbRet = regRepo.Insert();
                if (dbRet != 0)
                {
                    MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                        + "referência: LançtoGravarReposição" + "\n" + regRepo.MsgErro,
                        "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return 7;
                }
            }
            if (talBlk != 6)
            {
                Tarefa estaTafa = new Tarefa(myDBase);
                estaTafa.Data = datador.Value;
                estaTafa.Apto = Convert.ToInt32(viewApto.Items[antApto].Name);
                dbRet = estaTafa.Delete();
                if (dbRet != 0)
                {
                    MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                        + "referência: LançtoGravarTarefa" + "\n" + estaTafa.MsgErro,
                        "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return 7;
                }
                if (antAção != 3)
                {
                    Apartamento esteApto = new Apartamento(myDBase);
                    esteApto.Apto = Convert.ToInt32(viewApto.Items[antApto].Name); 
                    esteApto.Status = "L";
                    dbRet = esteApto.SetStatus();
                    if (dbRet != 0)
                    {
                        MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                            + "referência: LançtoGravarStatus" + "\n" + esteApto.MsgErro,
                            "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return 7;
                    }
                }
            }
            myDBase.CommitTransaction();
            return 0;
        }

        private void datador_ValueChanged(object sender, EventArgs e)
        {
            listaAções.Rows.Clear();
            Form_Monta_Operações();
        }

        private void viewCameira_Click(object sender, EventArgs e)
        {
            if (antCama >= 0)
            {
                viewCameira.Items[antCama].ImageIndex = viewCameira.Items[antCama].ImageIndex - 1;
                viewCameira.Items[antCama].BackColor = SystemColors.Control;
            }
            int qIdx = viewCameira.SelectedIndices[0];
            códDupla = Convert.ToInt32(viewCameira.Items[qIdx].Name); 
            viewCameira.Items[qIdx].ImageIndex = viewCameira.Items[qIdx].ImageIndex + 1;
            viewCameira.Items[qIdx].BackColor = SystemColors.GradientActiveCaption;  
            antCama = qIdx;
            Quant[3].ReadOnly = false; 
            janApto.Enabled = false;
            viewAção.Items[antAção].ImageIndex = 5;
            viewAção.Items[antAção].BackColor = SystemColors.Control;
            janAção.Enabled = false;
            janData.Enabled = true;
            talBlk = 6;
            janLocal.Enabled = true;
            viewLocal.Focus();
        }

        private void viewCameira_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.KeyCode == Keys.Enter) viewCameira_Click(sender, e);
        }

        private void viewBloco_Selected()
        {
            janApto.Enabled = true;
            viewAção.Items[antAção].ImageIndex = 5;
            viewAção.Items[antAção].BackColor = SystemColors.Control;
            janAção.Enabled = false;
            janData.Enabled = true;
            viewBloco_Set_Apto(); 
            viewApto.Focus(); 
        }

        private void viewBloco_Set_Apto()
        {
            Apartamentos tabApto = new Apartamentos(myDBase);
            tabApto.Bloco = talBlk; 
            int dbRet = tabApto.ListaBloco();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft\n" 
                    + "referência: LançtoSetApto\n" + tabApto.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            for (int ap = 0; ap < viewApto.Items.Count; ap++)
            {
                string qNumo = tabApto.Items[ap].Apto.ToString();
                int col = Convert.ToInt32(qNumo[3].ToString());
                col = col - 1;
                int lna = Convert.ToInt32(qNumo[1].ToString());
                lna = lna - 1;
                int Idx = (lna * 4) + col;
                int qIcon = 0;
                if (tabApto.Items[ap].Status == "M")
                {
                    qIcon = 4;
                }
                else
                {
                    if (tabApto.Items[ap].Livre != "L") qIcon = 2;
                    else qIcon = 0;
                    if (tabApto.Items[ap].Status != "L") qIcon = qIcon + 1;
                }
                viewApto.Items[Idx].Name = qNumo;
                qNumo = qNumo.Insert(1, "_");
                viewApto.Items[Idx].Text = qNumo;
                viewApto.Items[Idx].ImageIndex = qIcon;
            }
        }

        private void viewApto_Click(object sender, EventArgs e)
        {
            int qIdx = viewApto.SelectedIndices[0];
            viewApto.Items[antApto].BackColor = SystemColors.Control;
            viewApto.Items[qIdx].BackColor = SystemColors.GradientActiveCaption;
            antApto = qIdx;
            Operação regOpera = new Operação(myDBase);
            regOpera.Local = Convert.ToInt32(viewApto.Items[qIdx].Name);
            regOpera.Data = datador.Value;
            int dbRet = regOpera.Lançado();
            if (dbRet > 1)
            {
                MessageBox.Show("Favor avisar a RamaSoft\n"
                    + "referência: LançtoAptoLanço\n" + regOpera.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            else if (dbRet == 1) MessageBox.Show("já houve um lançamento\n" + "para este apartamento,\n"
                + "no dia " + regOpera.Data.ToString("dd/MMMM"), "   Apartamento " + regOpera.Local.ToString("0_000")); 
            janData.Enabled = false;
            listaPende.Items.Clear();  
            Tarefas tabTafa = new Tarefas(myDBase);
            tabTafa.Apto = Convert.ToInt32(viewApto.Items[qIdx].Name);
            dbRet = tabTafa.ListaApto();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft\n"
                    + "referência: LançtoAptoClick\n" + tabTafa.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            for (int tf = 0; tf < tabTafa.Items.Count; tf++)
            {
                listaPende.Items.Add (tabTafa.Items[tf].Data.ToString("dd/MMMM"));      
            }
            if (listaPende.Items.Count == 0)
                listaPende.Items.Add ("*** OK ***");
            viewAção.Items[antAção].ImageIndex = 5;
            viewAção.Items[antAção].BackColor = SystemColors.Control;
            janPessoas.Enabled = true;
            txPessoas.Focus(); 
        }

        private void viewApto_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.KeyCode == Keys.Enter) viewApto_Click(sender, e);
        }

        private void viewAção_Click(object sender, EventArgs e)
        {
            if (viewAção.SelectedIndices.Count == 0) return;
            viewAção.Items[antAção].ImageIndex = 5;
            viewAção.Items[antAção].BackColor = SystemColors.Control; 
            int qIdx = viewAção.SelectedIndices[0];
            viewAção.Items[qIdx].ImageIndex = 6;
            viewAção.Items[qIdx].BackColor = SystemColors.GradientActiveCaption; 
            antAção = qIdx;
            if (qIdx == 3 || qIdx == 4 || qIdx == 6)
            {
                cmdOK.Enabled = true;
                cmdOK.Focus();
            }
            else
            {
                janProds.Enabled = true;
                Quant[0].Focus();
            }
        }

        private void viewAção_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.KeyCode == Keys.Enter) viewAção_Click(sender, e);
        }

        private void listaAções_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter) listaAções_DoubleClick(null, null);
        }

        private void listaAções_DoubleClick(object sender, EventArgs e)
        {
            qRow = listaAções.CurrentRow.Index; 
            DialogResult resp = MessageBox.Show("Você confirma a exclusão de:\n"
                + listaAções.Rows[qRow].Cells[3].Value.ToString() + " no Apartamento "
                + listaAções.Rows[qRow].Cells[2].Value.ToString() + " ?",
                "Excluir lançamento do dia " + datador.Value.ToString("dd/MMMM"),
                MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
            if (resp == DialogResult.No) return;
            string nmLoc = listaAções.Rows[qRow].Cells[2].Value.ToString();
            nmLoc = nmLoc.Remove(1, 1);
            Operação estaOpera = new Operação(myDBase);
            estaOpera.Local = Convert.ToInt32(nmLoc);
            estaOpera.Data = datador.Value;
            int dbRet = estaOpera.TemOutra();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: LançtoExcluirOutra" + "\n" + estaOpera.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            string antStatus = estaOpera.Status;  
            myDBase.BeginTransaction(IsolationLevel.ReadCommitted);  
            estaOpera.Número = Convert.ToInt32(listaAções.Rows[qRow].Cells[0].Value.ToString());
            dbRet = estaOpera.Delete();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: LançtoExcluirOperação\n" + estaOpera.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            Reposição estaRepos = new Reposição(myDBase);
            estaRepos.Número = estaOpera.Número;
            dbRet = estaRepos.Delete();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: LançtoExcluirReposição" + "\n" + estaRepos.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            Apartamento esteApto = new Apartamento(myDBase);
            esteApto.Apto = Convert.ToInt32(nmLoc);
            esteApto.Status = antStatus;
            dbRet = esteApto.SetStatus();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: LançtoExcluirStatus" + "\n" + esteApto.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            myDBase.CommitTransaction();
            listaAções.Rows.RemoveAt(qRow);  
        }

        private void txPessoas_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar == (char)Keys.Enter) && (txPessoas.Text.Trim().Length > 0)) dataSaída.Focus();
            if ((e.KeyChar != (char)Keys.Back) && (e.KeyChar < '0' || e.KeyChar > '9')) e.Handled = true;
        }

        private void dataSaída_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar == (char)Keys.Enter) && (txPessoas.Text.Trim().Length > 0))
            {
                viewAção.Items[antAção].ImageIndex = 5;
                viewAção.Items[antAção].BackColor = SystemColors.Control;
                janAção.Enabled = true;
                viewAção.Focus();
            }
        }

        private void Form_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F4)
            {
                viewCameira.Visible = false;
                viewLocal.Visible = false; 
                janGrupo.Visible = true;
                numBloco.Focus();
            }
            if (e.KeyCode == Keys.F5)
            {
                janGrupo.Visible = false;
                viewLocal.Visible = true;
                viewCameira.Visible = true;
                viewCameira.Focus();
            }
        }

        private void viewLocal_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter) viewLocal_Click(null, null);
        }

        private void viewLocal_Click(object sender, EventArgs e)
        {
            if (talLocal >= 0)
            {
                viewLocal.Items[talLocal].ImageIndex = viewLocal.Items[talLocal].ImageIndex - 1;
                viewLocal.Items[talLocal].BackColor = SystemColors.Control;
            }
            talLocal = viewLocal.SelectedIndices[0];
            viewLocal.Items[talLocal].ImageIndex = viewLocal.Items[talLocal].ImageIndex + 1;
            viewLocal.Items[talLocal].BackColor = SystemColors.GradientActiveCaption;
            viewAção.Items[antAção].ImageIndex = 5;
            viewAção.Items[antAção].BackColor = SystemColors.Control;
            janAção.Enabled = true;
            viewAção.Focus();

        }

        private void numBloco_ValueChanged(object sender, EventArgs e)
        {
            txGrupo.Text = tabGrupo[(int)numBloco.Value];
        }

        private void numBloco_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter)
            {
                códDupla = tabDupla[(int)numBloco.Value];
                titGrupo = txGrupo.Text;
                Quant[3].ReadOnly = true;
                janLocal.Enabled = false;
                janApto.Enabled = false;
                viewAção.Items[antAção].ImageIndex = 5;
                viewAção.Items[antAção].BackColor = SystemColors.Control;
                janAção.Enabled = false;
                janData.Enabled = true;
                talBlk = (int)numBloco.Value;
                viewBloco_Selected();

            }
        }
    }
}
